package org.ezplatform.office.questionnaire.service;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Map;

import org.ezplatform.core.dao.jpa.JpaBaseDao;
import org.ezplatform.core.service.BaseService;
import org.ezplatform.office.questionnaire.dao.QuestionnaireSetItemsDao;
import org.ezplatform.office.questionnaire.entity.QuestionnaireSetItems;
import org.ezplatform.util.JsonUtils;
import org.ezplatform.util.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import com.alibaba.fastjson.JSONObject;

@Service("questionnaireSetItemsService")
@Transactional
public class QuestionnaireSetItemsService extends BaseService<QuestionnaireSetItems, String> {

	private final static Logger LOGGER = LoggerFactory.getLogger(QuestionnaireSetItemsService.class);

	@Autowired
	@Qualifier("questionnaireSetItemsDao")
	private QuestionnaireSetItemsDao questionnaireSetItemsDao;

	@Override
	protected JpaBaseDao<QuestionnaireSetItems, String> getEntityDao() {
		return questionnaireSetItemsDao;
	}

	/**
	 * 获取要保存的题库题目选项
	 * 
	 * @param itemSetting
	 *            题目选项字符串
	 * @param topicId
	 *            题目Id
	 * @return 题库题目选项实体集合
	 */
	public List<QuestionnaireSetItems> getSaveItemsInfo(String itemSetting, String topicId) {
		List<QuestionnaireSetItems> list = new ArrayList<QuestionnaireSetItems>();
		List<String> listItem = Arrays.asList(itemSetting.split("option-option"));
		for (int i = 0; i < listItem.size(); i++) {
			QuestionnaireSetItems questionnaireSetItems = new QuestionnaireSetItems();
			if (!"".equals(listItem.get(i))) {
				Map<String, Object> map = JSONObject.parseObject(listItem.get(i));
				String name = StringUtils.null2String(map.get("option"));
				String itemNo = StringUtils.null2String(map.get("optionOrder"));
				questionnaireSetItems.setItemSetting(StringUtils.null2String(map.get("optionSetting")));
				questionnaireSetItems.setItemName(name);
				if (StringUtils.isNotBlank(itemNo)) {
					questionnaireSetItems.setSortNo(Integer.parseInt(itemNo));
				}
			}
			questionnaireSetItems.setTopicId(topicId);
			list.add(questionnaireSetItems);
		}
		return list;
	}

	/**
	 * 获取要保存的题库题目选项
	 * 
	 * @param itemSetting
	 *            题目选项字符串
	 * @param childItemSetting
	 *            题目选项子选项字符串
	 * @param topicId
	 *            题目Id
	 * @return 题库题目选项实体集合
	 */
	public List<QuestionnaireSetItems> getSaveItemsInfo(String itemSetting, String childItemSetting, String topicId) {
		List<QuestionnaireSetItems> list = new ArrayList<QuestionnaireSetItems>();
		List<String> listItem = Arrays.asList(itemSetting.split("option-option"));
		for (int i = 0; i < listItem.size(); i++) {
			Map<String, Object> map = JsonUtils.readValue(listItem.get(i));
			String name = (String) map.get("option");
			String itemNo = (String) map.get("optionOrder");
			QuestionnaireSetItems questionnaireSetItems = new QuestionnaireSetItems();
			questionnaireSetItems.setItemSetting(childItemSetting);
			questionnaireSetItems.setItemName(name);
			if (itemNo != null) {
				questionnaireSetItems.setSortNo(Integer.parseInt(itemNo));
			}
			questionnaireSetItems.setTopicId(topicId);
			list.add(questionnaireSetItems);
		}
		return list;
	}

	/**
	 * 删除题目选项
	 * 
	 * @param list
	 *            题目Id集合
	 * @return 删除成功返回true
	 */
	public boolean deleteItemsByTopicId(List<String> list) {
		questionnaireSetItemsDao.deleteItemsByTopicId(list);
		return true;
	}

	/**
	 * 获取题目选项信息
	 * 
	 * @param topicId
	 *            题目Id
	 * @return 题目选项实体集合
	 */
	public List<QuestionnaireSetItems> getItemsByTopicId(String topicId) {
		return questionnaireSetItemsDao.getItemsByTopicId(topicId);
	}

}